package jcl;

import java.util.*;

//Map接口——存储一个键值对数据  MAp接口功能测试
public class MapTest {
    public static void main(String[] args) {
    /*
        //key不重复，value可以重复
        Map<Integer,Integer> map = new HashMap<>();
        //录入
        map.put(1,66);
        map.put(2,99);
        //value可以重复，用一个key会得到一个value值
        //相当于key是一个编号，一个编号对应一个物品，X，Y坐标轴一个意思
        //map.put(3,66);
        System.out.println(map.containsKey(3));//是否存在编号3
        System.out.println(map.containsValue(66));//是否存在value值66的值
        System.out.println(map.containsValue(77));//是否存在value值77的值

        map.put(1,55);//把原来 key 1对应了value换成 55
        System.out.println(map.containsValue(66));//是否存在value值66的值 flase
        System.out.println(map.containsValue(55));


    */
      /*
      Map<String,Integer>  map = new HashMap<>();
      //put测试
        map.put("张三", 18);
        map.put("小明", 19);
        map.put("王五", 20);

        //用Set集合接受不重复的key值
        Set<String> set = new HashSet<>();
        set = map.keySet();//返回Map集合中的所有key值
        //for——each 循环打印
        System.out.print("Map中所有key为：");
        for(String i : set){
            System.out.print(i + " ");
        }

        System.out.println();
        map.put("小红", 19);//添加一个重复value值
        //for——each 循环打印
        System.out.print("Map中所有key为：");
        for(String i : set){
            System.out.print(i + " ");
        }
        System.out.println();
        //用 Collection集合接受不重复的key值
        Collection<Integer> collection = new HashSet<>();
        collection = map.values();//返回Map集合中的所有value值
        //for——each 循环打印
        System.out.print("Map中所有value为：");
        for(int i : collection){
            System.out.print(i + " ");
        }

        System.out.println();
        System.out.println("张三的年龄：" + map.get("张三"));
        map.put("张三", 99);//修改张三的年龄
        System.out.println("张三的年龄：" + map.get("张三"));

        System.out.println();
        System.out.print("Map中所有value为：");
        for(int i : collection){
            System.out.print(i + " ");
        }
        System.out.println();
        System.out.println(map.remove("王五"));;//删除对应key的键值对
        System.out.print("Map中所有value为：");
        for(int i : collection){
            System.out.print(i + " ");
        }

       */
        //关于Map接口常见子类的添加问题。
     //   Map<String,Integer>  map = new HashMap<>();
        //put测试
//        map.put("老大", 1);
//        map.put("老二", 2);
//        map.put("老三", 3);
//        map.put("老四", 4);
//        System.out.println(map.toString());

        //null保存问题
       // Map<String,Integer>  map = new HashMap<>();
        Map<String,String> map = new TreeMap<>();
        try {
            map.put(null,null);
        }catch (NullPointerException e) {
            System.out.println("key为空");
        }
        map.put("张三",null);
        System.out.println(map);
    }
}
